Software applications may be used to provide information and/or functionality to one or more users. For example, users may implement or access a software application to obtain a stock quote or an airline reservation, or to manage aspects of a business enterprise.
Particular functions of software applications may be implemented as more or less discrete components, and may thereby be used in a variety of contexts. For instance, the example just given of software for obtaining a stock quote may be implemented in a software component that may then be deployed into many other software applications, such as, for example, a stock price charting tool or a daily stock price reporting tool. Such re-use of software application components may, among other advantages, increase the efficiency and reliability of the components themselves, and of other applications that make use of the components, as well as reducing software development and maintenance costs.
Additionally, discrete software functionality also may be provided by permitting access to the functionality to outside parties, perhaps over a computer network. In particular, a plurality of software applications may interact with one another to provide or share functionality in an efficient and reliable way while minimizing human involvement.
Certain types of software applications are known as application services. In particular, when such an application service is provided over the World Wide Web (“WWW”), it may be referred to as a web service (“WS”). A web service may be implemented, for example, such that the web service provides functionality and data to a client, according to a defined interface that governs and defines the interaction between the two parties.
Currently, users must cope with large number of web services, and they must do so in a flexible, dynamic, and efficient manner. In addition, increasingly rapid changes in market situations often force companies to adapt their business processes and to set up interoperations with other parties quickly. Thus, there is a growing need to make use of web services.
Service-oriented technology has been developed to address some of the challenges posed by these developments. For example, with the use of the web service description language (“WSDL”) in conjunction with the simple object access protocol (“SOAP”) and the universal description, discovery and integration (“UDDI”), software components can be accessed through, and can be communicated with, standardized interfaces and protocols. Standard interfaces and protocols increase the flexibility of companies to integrate various web services, but each task of the web service usage process still requires a manual integration activity.
A goal of semantic web services (“SWS”) research has been to automate major tasks of this usage process, for example, the discovery, selection, composition, execution, and monitoring of web services. Languages, such as, the web ontology language for services (OWL-S) and the web service modeling ontology (WSMO) have been developed to try to facilitate these tasks. However, even with these tools, specialized software and algorithms are needed to interpret the semantics used to describe the tasks of the web service usage process.